		$(document).ready(function(){
/*==============================================================================================*/
			/*DnD block*/
			if (Modernizr.draganddrop) {
				var dragSrcEl = null;
				function handleDragOver(e) {
					if (e.preventDefault) {
						e.preventDefault(); // Necessary. Allows us to drop.
					}
					e.dataTransfer.dropEffect = 'move';  // See the section on the DataTransfer object.
					return false;
				}
				function handleDragEnter(e) {
					// this / e.target is the current hover target.
					$(this).addClass('over');
				}
				function handleDragLeave(e) {
					$(this).removeClass('over');  // this / e.target is previous target element.
				}
				function handleDragStart(e) {
					this.style.opacity = '0.4';  // this / e.target is the source node.
					dragSrcEl = this;
					e.dataTransfer.effectAllowed = 'move';
					e.dataTransfer.setData('text/html', this.innerHTML);
				}
				function handleDrop(e) {
					// this / e.target is current target element.
					if (e.stopPropagation) {
						e.stopPropagation(); // stops the browser from redirecting.
					}
					// Don't do anything if dropping the same column we're dragging.
					if (dragSrcEl != this) {
						// Set the source column's HTML to the HTML of the columnwe dropped on.
						dragSrcEl.innerHTML = this.innerHTML;
						this.innerHTML = e.dataTransfer.getData('text/html');
					}
					return false;
				}
				function handleDragEnd(e) {
					// this/e.target is the source node.
					this.style.opacity = '1';  // this / e.target is the source node.
					[].forEach.call(cols, function (col) {
						$(col).removeClass('over');
					});
				}
				var cols = document.querySelectorAll('#columns .column');
				[].forEach.call(cols, function(col) {
					col.addEventListener('dragstart', handleDragStart, false);
					col.addEventListener('dragend', handleDragEnd, false);
					col.addEventListener('dragenter', handleDragEnter, false);
					col.addEventListener('dragover', handleDragOver, false);
					col.addEventListener('dragleave', handleDragLeave, false);
					col.addEventListener('drop', handleDrop, false);
					col.addEventListener('dragend', handleDragEnd, false);
				});
			} else {
				//alert("DnD Not Enabled");
			}
/*==============================================================================================*/
			/*Local storage block*/
			try{
				localStorage.setItem("shirt", 10);
			}catch(e){
				alert(e.toString());
			}
			//alert(localStorage.shirt);
			//alert(localStorage["shirt"]);
			//alert(localStorage.getItem("shirt"));
			
			/*==============================================================================================*/
			/*APPLICATION CACHE BLOCK*/
			var appCache = window.applicationCache;
			//appCache.update();
			// This gets fired when new cache files have been downloaded
			// and are ready to replace the *existing* cache. The old
			// cache will need to be swapped out.
			$(appCache).bind("updateready", function(event){
				appCache.swapCache();
			});
			// This gets fired when an error occurs
			$(appCache).bind(
				"error",
				function( event ){
					alert( "An error occurred" );
			});
			// This gets fired when the cache manifest cannot be found.
			$( appCache ).bind(
				"obsolete",
				function( event ){
					alert( "Manifest cannot be found" );
			});
			// This gets fired when all cached files have been
			// downloaded and are available to the application cache.
			$( appCache ).bind(
			"cached",
			function( event ){
				alert( "All files downloaded" );
			});
			// This gets fired for every file that is downloaded by the
			// cache update.
			$( appCache ).bind(
			"progress",
			function( event ){
				alert( "File downloaded" );
			});
			// This gets fired when the browser is downloading the files
			// defined in the cache manifest.
			$( appCache ).bind(
			"downloading",
			function( event ){
				alert( "Downloading cache" );
			});
			// This gets fired if there is no update to the manifest file
			// that has just been checked.
			$( appCache ).bind(
			"noupdate",
			function( event ){
				alert( "No cache updates" );
			});
			// List for checking events. This gets fired when the browser
			// is checking for an udpated manifest file or is attempting
			// to download it for the first time.
			$( appCache ).bind(
			"checking",
			function( event ){
				alert( "Checking for manifest" );
			});
		});